Embodiments of the inventive concept relate generally to information storage technologies. More particularly, certain embodiments of the inventive concept relate to systems, methods, and apparatuses in which a storage device is monitored and controlled based on a host-specified quality condition.
A memory system typically comprises a storage device connected to a host. The storage device may store and access data in response to commands from the host. For example, the storage device may write data in response to a write command from the host, read data in response to a read command from the host, and erase data in response to an erase command from the host.
In general, the performance of the storage device may evaluated according to its response time and throughput, where response time indicates the amount of delay to complete an operation, and throughput indicates a number of operations performed per unit time. Response time and throughput are typically in a tradeoff relationship, with better response time (i.e., less delay) coming at the cost of worse throughput, and vice versa. Response time and throughput may also vary over time, e.g., with unusually slow response time and/or low throughput occurring on occasion.
In some circumstances, the host may require a predetermined level of performance from the storage device. For example, when executing real-time operations, the host may require that the response time be less than a maximum level, or when performing certain batch operations, the host may require a minimum level of throughput. Moreover, the host may also require a certain level of uniformity of performance. For example, it may require that variations of response time or throughput remain within predetermined bounds.
In general, the performance demands on a storage device, as well as factors affecting the performance, may change over time. For instance, in a storage device comprising flash memory, repetition of memory access operations tends to decrease reliability of memory cells over time, and it also tends to reduce the amount of available storage space due to invalid blocks. These and other changes can make it more difficult to meet response time and throughput requirements. Accordingly, there is a general need for memory systems to adapt to changes in their operating conditions.